import sys
import os
import time
import traceback

# 添加当前目录到Python路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

# 导入Excel搜索工具的主要功能
from excel_search_tool import ExcelSearchTool

class Debugger:
    def __init__(self):
        # 初始化调试器
        self.debug_log = []
        self.add_log("调试器初始化完成")
        
    def add_log(self, message):
        # 添加调试日志
        timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
        log_message = f"[{timestamp}] {message}"
        self.debug_log.append(log_message)
        print(log_message)
        
    def save_log(self, filename="debug_log.txt"):
        # 保存调试日志到文件
        with open(filename, "w", encoding="utf-8") as f:
            for log in self.debug_log:
                f.write(log + "\n")
        self.add_log(f"调试日志已保存到: {filename}")
    
    def test_core_functions(self):
        # 测试核心功能
        try:
            self.add_log("开始测试核心功能")
            
            # 检查是否存在测试用的Excel文件
            test_file = "VBA整合搜索结果_3.xlsx"
            if os.path.exists(test_file):
                self.add_log(f"找到测试文件: {test_file}")
            else:
                self.add_log(f"警告: 未找到测试文件 {test_file}")
            
            # 实例化Excel搜索工具
            search_tool = ExcelSearchTool()
            self.add_log("Excel搜索工具实例化成功")
            
            # 测试搜索功能（简化版）
            # 注意：完整GUI测试需要用户交互，这里测试核心逻辑
            self.add_log("测试搜索逻辑组件")
            
            # 测试搜索结果处理
            if hasattr(search_tool, 'all_results'):
                self.add_log(f"验证all_results属性: {type(search_tool.all_results)}")
            
            self.add_log("核心功能测试完成")
            return True
        except Exception as e:
            self.add_log(f"核心功能测试失败: {str(e)}")
            self.add_log(f"错误堆栈: {traceback.format_exc()}")
            return False

if __name__ == "__main__":
    # 创建调试器并运行测试
    debugger = Debugger()
    debugger.add_log("=== Excel搜索工具调试会话开始 ===")
    
    # 测试核心功能
    core_test_result = debugger.test_core_functions()
    
    # 列出当前目录中的文件，帮助调试
    debugger.add_log("\n当前目录文件列表:")
    for file in os.listdir('.'):
        if os.path.isfile(file):
            debugger.add_log(f"- {file}")
    
    # 保存调试日志
    debugger.save_log()
    
    # 检查是否生成了可执行文件
    exe_file = "ExcelSearchTool.exe"
    if os.path.exists(exe_file):
        file_size = os.path.getsize(exe_file) / 1024  # KB
        debugger.add_log(f"\n可执行文件信息: {exe_file} ({file_size:.2f} KB)")
    
    debugger.add_log("=== Excel搜索工具调试会话结束 ===")